IP
Das Internet Protocol (IP) implementiert die nötige Funktionalität, um die Aufgaben der Vermittlungsschicht erfüllen zu können. Es teilt dazu die Arbeit in drei Aufgabenbereiche auf. Beim Datentransfer (Forwarding) wird die Adressierung, das Paketformat und die Verarbeitung festgelegt. Bei der Wegwahl (Routing) handelt es sich um die Aufgabe, geeignete Zwischenknoten für die Vermittlung zu wählen. Es gibt außerdem Hilfsprotokolle, die beim Gebrauch der unteren Schichten aushelfen. IPv4 ist dabei verbindungslos und ungesichert, also ein Datagrammdienst. Daher wird keine Flusskontrolle implementiert. Adressen Jedes Gerät erhält eine eindeutige IP-Adresse, die 32 Bit lang ist und in der dotted decimal notation angegeben wird, bei der jeweils 8 Bit als eine Dezimalzahl dargestellt werden, die durch Punkte getrennt sind. Es können nicht die MAC-Adressen verwendet werden, da diese keine für die Vermittlungsschicht hilfreiche Struktur hätten. Die IP-Adressen sind hierarchisch aufgebaut, sodass sich der Anfangsteil als Netzwerkanteil und der Teil als Hostanteil interpretieren lässt. Damit wird der Aufwand für Weiterleitungstabellen heruntergebrochen, denn eine Router muss nur noch die Adressen der Geräte innerhalb des eigenen Netzes kennen und zusätzlich wissen, wie andere Netze erreichbar sind. Da nicht alle Netzwerke gleich viele Rechner beinhalten, wurden verschiedene Netzwerkanteile definiert, die unterschiedlich viele Hosts enthalten können. Die Größe nimmt von Class A zu Class C ab und die Klasse wurde über das Prefix der Adresse identifiziert. Es existieren weitere Spezialnetze, die über besondere Prefixe gekennzeichnet sind. Allerdings reichte diese Aufteilung bald nicht mehr aus und es wurden Subnetze eingeführt. Router außerhalb des Netzes brauchen sich nur um die Weiterleitung an das entsprechende Class A, B oder C-Netz zu kümmern. Innerhalb des Netzes wird dann bestimmt, wie viele führende Bits zur Netzwerkadresse gehören. Das geschieht über eine Subnetzmaske, die angibt, wie viele Stellen zur Netzadresse gehören. Ein interner Router kann damit Netzwerke in mehr als nur drei Größen verwalten. Es sind außerdem stets zwei Adressen pro Netz reserviert. Die niedrigste für das Netz selbst und die höchste für einen Broadcast an alle Hosts im Netz. Außerdem ist 127.0.0.1 als Loopback-Adresse definiert und wird häufig mit localhost bezeichnet. Wegwahl Die Weiterleitungstabelle hält vor, welche Zieladressen über welches Interface an welchen Router weitergeleitet werden sollen. Außerdem weiß sie, welche Adressen bereits im eigenen Netz liegen. Da auch mit Subnetzmasken immer noch die Netzaufteilung sehr ineffizient war, konnten bald über Classless inter-Domain Routing (CIDR) mehrere Class C-Netze zusammengeschlossen werden. Dazu werden Netzwerkprefix variabler Länge verwendet. Da dadurch zwei übereinstimmende Adresseinträge in einer Tabelle auftauchen können, wird nach dem longest prefix match gesucht. Dabei wird an die passende Adresse geschickt, deren Netzmaske am längsten ist. Network Address Translation (NAT) Die Adressknappheit kann dadurch gelockert werden, dass die IP-Adressen zwar weltweit eindeutig sein müssen, aber innerhalb eines Netzes durchaus beliebige Adressen verwendet werden können. Es muss dabei allerdings sichergestellt werden, dass diese internen Adressen nicht nach außen hin durchgegeben werden. Selten macht eine 1:1-Übersetzung Sinn. Es werden häufig eine Menge interner Adressen auf möglicherweise unterschiedlich viele externe Adressen übersetzt. Eine solche Abbildung kann aus der Zuweisung einer globalen Adresse aus einem zur Verfügung stehenden Adresspool geschehen, oder durch NAT-Overloading, bei dem eine interne IP-Adresse ineine globale IP-Adresse mit Port übersetzt wird. Letzteres ist die praktisch häufig verwendete Variante. Aufbau Der IP-Header ist 20 Byte lang mit der Option, zusätzliche Headerinformationen anzuhängen. Er besteht aus: * Version * IP-Header-Länge (IP header length, IHL) * Gesamtlänge (total length) * einer Identifikationsnummer des Pakets (identification) * einigen Fragmentierungskontrollbits (don't fragment: DF, more fragments: MF, fragment offset) * Angaben zur Qualitätssicherung (type of service) * einem Zähler, dem time to live (TTL), der bei Ablauf zum Verwerfen des Pakets führt, um Endloskreisen zu verhindern * einem Protokollfeld * einer Prüfsumme für den Header (header checksum) * Ziel- und Quelladresse (source and destination address) Der Header kann durch options erweitert werden. Es sind einige solcher Optionen definiert, die beispielsweise das Routing beeinflusse. Sie werden in der Praxis aber kaum verwendet. Der Header wird von jedem Router auf verschiedene Kriterien überprüft, bevor er weitergeleitet wird. Dies umfasst beispielsweise das TTL-Feld, die Prüfsumme, die Adressgültigkeit etc. Fragmentierung kann nötig sein, da über verschiedene Medien nur Einheiten einer bestimmten maximalen Größe verschickt werden dürfen. Diese Größe wird als maximum transfer unit (MTU) bezeichnet. Jeder Router prüft, ob das IP-Paket weitergeleitet werden darf, sonst fragmentiert er es. Alle Fragmente tragen dabei die ID des ursprünglichen Pakets in ihrer identification. Mit dem MF-Bit wird erklärt, dass nach diesem Fragment noch mindestens ein weiteres existiert. Das letzte Fragment setzt das MF-Bit also nicht. Der offset gibt an, an welcher Stelle der Originaldaten das Fragment ansetzt. Das erste Fragment beginnt am Anfang, hat also einen offset von 0. Ist dieses erste Fragment bspw. 1024 Byte lang, so beginnt das nächste Fragment mit einem offset von \frac{1024}{8}=128 , denn der offset wird immer in Vielfachen von 8 Byte angegeben. Mit diesen Informationen kann ein Empfänger aus den Fragmenten das ursprüngliche Paket zusammensetzen, auch wenn die Fragmente nicht in der korrekten Reihenfolge eintreffen. Hilfsprotokolle IP nutzt die unteren Schichten, um seine Aufgaben zu erfüllen. Verschiedene Probleme müssen im Zusammenspiel mit diesen Schichten gelöst werden, weshalb einige Hilfsprotokolle existieren. Address Resolution Protocol (ARP) Zwischen zwei Routern besteht häufig eine dedizierte Verbindung, weshalb eine Weiterleitung problemlos möglich ist. Sind jedoch mehrere Geräte z. B. über einen Bus miteinander verbunden, ist die Bestimmung der MAC-Adresse nötig, um das Paket an den korrekten Empfänger weiterleiten zu können. Das Vorhalten einer direkten Zuordnung von IP zu MAC ist nur in kleinen Netzen möglich. Es wäre auch denkbar, einen zentralen Server einzurichten, der diese Aufgabe übernimmt, allerdings wäre dies mit hohem Aufwand verbunden und ein single point of failure. Daher kommt ARP zum Einsatz, welches dezentral arbeitet, indem es Broadcasts verwendet. Ein Rechner, der eine MAC-Adresse zu einer IP-Adresse sucht, verschickt in einem Broadcast seine eigene IP- und MAC-Adresse sowie die Ziel-IP-Adresse. Jeder Rechner im Netz erhält diese Nachricht, sodass der Rechner mit der Ziel-IP-Adresse antworten kann. Dies erfolgt im Unicast, da ihm über die Nachricht die MAC-Adresse des Senders bereits bekannt ist. Der Sender speichert nun die MAC-Adresse in einem Cache unter der entsprechenden IP-Adresse ab, um unnötige weitere ARP-Anfragen zu vermeiden. Allerdings müssen diese Einträge nach einer gewissen Zeit wieder gelöscht werden, um nicht zu veralten und auf Topologieänderungen reagieren zu können. Ein Sicherheitsproblem dieses Verfahrens besteht darin, dass sich ein anderer Rechner durch eine Antwort auf den ARP-Request als der Zielrechner ausgeben kann. Der anfragende Rechner verwirft einfach mehrfach eintreffende ARP-Replies und verwendet die zuerst angekommene. Umgekehrt kann es sein, dass eine sogenannte diskless station nach einem Start ihre IP erst ermitteln muss. Dazu senden sie einen reverse ARP (RARP)-Request mit seiner eigenen MAC-Adresse als Broadcast durch das Netz, der von einem RARP-Server empfangen wird. Dieser teilt dem Anfragenden anhand einer Konfiguration eine IP-Adresse mit. Dynamic Host Configuration Protocol (DHCP) Mächtiger als RARP ist DHCP, welches die vollständige Eingliederung eines Rechners in ein Netzwerk automatisch vornehmen kann. Es arbeitet auf einer höheren Schicht als IP, denn es benutzt zusätzlich UDP. Ein Rechner, der sich mittels DHCP in ein Netz einwählen möchte, versendet einen entsprechenden Broadcast. Ein DCHP-Server wählt aus einem Adresspool eine passende aus und antwortet mit allen nötigen Informationen, unter anderem ein Ablaufdatum für die IP-Adresse. Vor Ablauf einer Adresse kann ein Rechner eine renewal-Anfrage versenden, wodurch vom DHCP die Adresse aufgefrischt werden kann. Internet Control Message Protocol (ICMP) Da IP nur unzuverlässigen Datenaustausch bietet, wird mit dem ICMP das Versenden von Kontroll- und Fehlermeldungen ermöglicht. Dies ist für Fehler- oder Testfälle hilfreich. Solche Nachrichten können sowohl von Endsystemen verschickt werden, als auch von Routern, z. B. im Falle einer Überlastung und Paketverlust. Der ICMP-Header setzt im IP-Header das Protokoll-Feld auf die ICMP-Nummer. Es folgen ein Type- und ein Code-Feld, mit dem die Art der Nachricht festgelegt wird. ICMP wird zum Beispiel für das Anpingen von Rechnern zu Testzwecken verwednet. IPv6 Die vielen Hilfsprotokolle von IPv4 zeigen, dass es damit aufwändig ist, die notwendigen Aufgaben zu erfüllen. Insbesondere, dass die Adressen ausgehen, ist ein treibender Grund für IPv6. Statt 32 Bit kommen hier 128 Bit Adressen zum Einsatz, es wurde vereinfacht und damit schneller gemacht. Die Adressen werden als 8 Hexadezimalwerte durch Doppelpunkte getrennt dargestellt. Die Adressen sind wieder hierarchisch aufgebaut. Das Präfix bestimmt den Typ der Adresse. Ein Mulitcast spricht alle Mitglieder einer Hostgruppe an, während ein Unicast ein einzelner Host ist. Es gibt noch einige reservierte Adressen und verschiedene Arten von Unicast-Adressen, wie in den Vorlesungsfolien zu sehen. Ein Rechner generiert prinzipiell selbst seine IPv6-Adresse als link local unicast. Da diese nur im eigenen Netz gilt, müssen per Router Discovery Netzprefix und Router ermittelt werden. Da die eigene link local unicast-Adresse bereits vergeben sein kann, wird mittels Duplicate Address Detection ihre Eindeutigkeit sichergestellt. Außerdem wird, um Fragmentierung zu verhindern, mittels Path MTU Discocery die kleineste MTU ermittelt. Bei IPv6 stehen einige Erweiterungsheader zur Verfügung, die das Paket um Metadaten bereichern können. Referenzen Wenn nicht anders angegeben, stammt der Inhalt aus den Vorlesungsfolien: * Meyer, U.: Vorlesungsfolien "20160529-SS-DatKom-4-Vermittlungsschicht" ( ) Siehe auch Übersichtsseite von Datenkommunikation und Sicherheit